![](img/at.png) 

#### Мене просто задовбало те, що у папці завантажень зазвичай не менше 500 файлів з яких важко, щось знайти)

Скрипт перевіряє наявність певних типів файлів у папці і переміщує у задані папки.


### config.yaml

В config.yaml вказуються папки і пауза між перевірками в секундах.          
Перевірити чи правильно написаний конфіг можна тут: https://yamlchecker.com/  
Як правильніше назвати блоки із шляхами і типами я хз тому називаю просто блоком шляхів.


В одному блоці шляхів такі ключі:
+ watch - шлях або список шляхів в яких треба очікувати файли
+ target - головна папка куди треба переміщувати файли
+ subpaths - список підпапкок і які будуть створені у "головній папці"(target) і в які будуть переміщені окремі типи файлів

У subpaths вказується назва папки і в списку типи: папка: [тип1, тип2, ..., тип3]. Якщо вказати замість назви папки крапку то файли будть переміщені у головну папку

### Пркилад:
![](img/beautify-picture.png)

Оскільки можливо хтось захоче скопіювати код то ось у текстовому форматі, мені не жалко):
```
# пауза між перевірками
pause: 2
paths:
- watch: 
  - D:\_\USER\Downloads # перша папка за якою буде стежити програма
  - C:\Users\SergoZar\Downloads # друга
  target: D:\_\USER\Downloads\_files # головна папка куди треба перемістити
  subpaths: # підпапки
  # підпапка з назвою "photo" в неї(D:\_\USER\Downloads\_files\photo) 
  # будуть переміщені усі файли з розширенням png, jpg, gif, webp i jpeg
  - photo: [png, jpg, gif, webp, jpeg]
  - video: [mp4, mov, webm]
  - archives: [7z, zip, rar, zstd]
  - bins: [exe, msi]
  - pdfs: [pdf]
  - docs: [doc, docx, odt, xlsx, xls, ppt, pptx, csv, ods, odp]
  - torrent: [torrent]
# а цього разу вказана одна папка
- watch: C:\Users\SergoZar\Downloads
  target: D:\_\USER\Downloads\_files
  subpaths:
  # оскільки вказана крапка то всі типи файлів із списку 
  # будуть переміщені у D:\_\USER\Downloads\_files
  - .: [png, jpg, gif, webp, jpeg, mp4, mov, webm, 7z, zip, rar, zstd]
  - name: [docx, pdf]

```

# Запуск
Спочатку `pip install -r requirements.txt` а далі  
Просто запускаєш main.py `python main.py&` і забуваєш(якщо ти на лінуксі.  
А якщо ти на вінді <s><del>то земля тобі бекдорами</del></s>, а не на лінуксі то запускаєш start.bat  

Конфіг динамічно не підтягується(поки-що хз як це зробити) тому після кожної зміни треба скрипт перезапустити

# Зупинка
Для зупинки скрипта запусти скрипт(класно звучить - знаю) `stop.py` `python stop.py`
# Проблеми?
В разі якихось проблем надсилай файл info_log.txt i error_log.txt

<sub>Ну і ще маленьким шрифтом напишу таке: Якщо скрипт поломає якийсь файл то я не несу за це відповідальності бо не я його запустив (:  

Але ти можеш повідомити, що сталося, щоб я міг пофіксити це на майбутнє)
</sub>